我想这样做:运行命令捕获输出选择一行选择该行的一列仅作为示例,假设我想从$PID获取命令名称(请注意,这只是一个示例,我并不是说这是获取来自进程ID的命令名称-我真正的问题是另一个我无法控制其输出格式的命令。如果我运行ps我会得到:PIDTTYTIMECMD11383pts/100:00:00bash11771pts/100:00:00psNowIdops|egrep11383andget11383pts/100:00:00bash下一步:ps|egrep11383|剪切-d""-f4。输出是:问题在于cut将输出切割为单个空格,并且由于ps在第2列和第3列之间添加了一些空格以保持表格
使用bash将文件扩展名“.jpg”添加到无扩展名文件的好方法是什么? 最佳答案 #Strip.jpgfromallfilenamesforfin*.jpg;domv"$f""${f%.jpg}";done#Add.jpgtoallfilenames(eventhosewith.jpgalready)forfin*;domv"$f""$f.jpg";done#Add.jpgtoallfilenames...unlesstheyarealready.jpgforfin*;docase"$f"in*.jpg)echoskipped$f;
我正在编写一个很长的Bash脚本。我想将CSV文件中的单元格读入Bash变量。我可以解析行和第一列,但不能解析任何其他列。到目前为止,这是我的代码:catmyfile.csv|whilereadlinedoread-d,col1col2它只打印第一列。作为附加测试,我尝试了以下方法:read-d,xy$y是空的。所以我尝试了:readxy$y是b.为什么? 最佳答案 你需要使用IFS而不是-d:whileIFS=,read-rcol1col2doecho"Igot:$col1|$col2"done请注意,对于通用CSV解析,您应该使
我想在linuxbash中检查一个文件是否是在x之前创建的。假设文件名为text.txt,时间为2小时。if[what?]thenecho"oldenough"fi 最佳答案 仅用于修改时间iftest`find"text.txt"-mmin+120`thenechooldenoughfi您可以使用-cmin更改或-amin访问时间。正如其他人指出的那样,我认为您无法跟踪创建时间。 关于linux-如何在bash中检查文件是否创建时间超过x时间?,我们在StackOverflow上找到一
有没有办法在shell脚本中包含另一个shell脚本以便能够访问其功能?就像在PHP中一样,您可以将include指令与其他PHP文件一起使用,以便通过调用函数名来运行其中包含的函数。 最佳答案 只需放入您的脚本中:sourceFILE或者.FILE#POSIXcompliant$LANG=Chelpsourcesource:sourcefilename[arguments]Executecommandsfromafileinthecurrentshell.ReadandexecutecommandsfromFILENAMEinth
如果我创建脚本/root/bin/whoami.sh包含:#!/bin/bashwhoami这个脚本是由一个正确配置了sudo的用户调用的,它会提示root有没有一种快速的方法来获取脚本中的实际用户,还是我必须求助于传递这个用户名的参数? 最佳答案 如果您使用sudosu-,$SUDO_USER不起作用。它还需要多次检查-如果$USER=='root'然后获取$SUDO_USER。使用whoami代替命令whoami。这将运行为当前session过滤的who命令。它为您提供比您需要的更多信息。所以,这样做只是为了获取用户:whoam
我在Linux服务器上有这个文件列表:abc.log.2012-03-14abc.log.2012-03-27abc.log.2012-03-28abc.log.2012-03-29abc.log.2012-03-30abc.log.2012-04-02abc.log.2012-04-04abc.log.2012-04-05abc.log.2012-04-09abc.log.2012-04-10我一直在删除选定的日志文件,使用命令rm-rf见下文:rm-rfabc.log.2012-03-14rm-rfabc.log.2012-03-27rm-rfabc.log.2012-03-28有
这个问题在这里已经有了答案:Quick-and-dirtywaytoensureonlyoneinstanceofashellscriptisrunningatatime(42个回答)关闭4年前。确保给定脚本只有一个实例在运行的最简单/最好的方法是什么-假设它是Linux上的Bash?目前我正在做:ps-Cscript.name.sh>/dev/null2>&1||./script.name.sh但它有几个问题:它将检查置于脚本之外它不允许我从不同的帐户运行相同的脚本-我有时会这样做。-C只检查进程名的前14个字符当然,我可以编写自己的pidfile处理,但我觉得应该有一个简单的方法来
每次我在Debian的命令行中使用bashscriptname.sh运行脚本时,我都会得到CommandNotfound,然后是脚本的结果。脚本可以运行,但是对于每个空行,屏幕上总是会打印一个CommandNotFound语句。每个空行都会导致找不到命令。我正在运行/var文件夹中的脚本。这是脚本:#!/bin/bashechoHelloWorld我通过输入以下内容来运行它:bashtestscript.sh为什么会发生这种情况? 最佳答案 确保您的第一行是:#!/bin/bash如果不是/bin/bash,请输入您的bash路径尝
我正在用bash编写一个脚本来计算执行我的命令所用的时间,请考虑:STARTTIME=$(date+%s)#commandblockthattakestimetocomplete...#........ENDTIME=$(date+%s)echo"Ittakes$($ENDTIME-$STARTTIME)secondstocompletethistask..."我想我的逻辑是正确的,但是我最终得到以下打印输出:“完成这项任务需要几秒钟...”我的字符串评估有什么问题吗?我相信bash变量是无类型的,如果bash中有一个“字符串到整数”的方法,我会很高兴。 最